#include "frame_thread_pool.h"

int threadPoolInit(threadPool_t *threadPool, int workerNum, MYSQL *mmysql) {
    tidArrInit(&threadPool->tidArr, workerNum);
    taskQueueInit(&threadPool->taskQueue);
    threadPool->exitFlag = 0;
    pthread_mutex_init(&threadPool->mutex, NULL);
    pthread_cond_init(&threadPool->cond, NULL);
    threadPool->mysql = mmysql;

    return 0;
}

void threadPoolFree(threadPool_t *threadPool) {
    if (threadPool == NULL) {
        return;  // 防御性编程
    }

    // 1. 等待所有工作线程退出（需在外部join线程）
    // 注意：实际线程回收应在外部调用pthread_join完成

    // 2. 销毁同步原语
    pthread_mutex_destroy(&threadPool->mutex);
    pthread_cond_destroy(&threadPool->cond);

    // 3. 释放子模块资源
    tidArrFree(&threadPool->tidArr);    // 释放线程#include "directory_operation.h"
    taskQueueFree(&threadPool->taskQueue);  // 释放任务队列
}

int buildUserSpace() {
    if(access(userSpace, F_OK) != 0) {  
        mkdir(userSpace, 0777);
    } 
    return 1;
}